package br.usjt.teste;

import static org.junit.Assert.*;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import br.usjt.servico.DAOFactory;
import br.usjt.servico.IClienteDAO;

public class REQ02ConsultarCliente_DAOCliente {
	static IClienteDAO clienteDAO;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		clienteDAO = DAOFactory.getDAOFactory(DAOFactory.MYSQL).getClienteDAO();
		clienteDAO.cadastra("58905389007", 	"carlos manoel", "r. taquari", "11111111");
		clienteDAO.cadastra("74554713431", 	"manoel silva", "av. do estado", "11111111");
	}

	
	/**
	 * Objetivo- verificar o comportamento da funcao consultar cliente com sucesso
	 * Pre-condicao - o cpf esta cadastrado
	 */
	@Test
	public void CT01FBConsultaCliente_com_sucesso() {
		try{
		assertEquals("achou o registro =", true, (clienteDAO.consulta("58905389007")).first());
		}
		catch(SQLException sql){
			
		}
	}
	/**
	 * Objetivo- verificar o comportamento da funcao consultar cliente para cpf nao cadastrado
	 * Pre-condicao - o cpf nao esta cadastrado
	 */
	@Test
	public void CT02A1ConsultaCliente_cpf_nao_cadastrado() {
		try{
		assertEquals("achou o registro =", false, (clienteDAO.consulta("1")).first());
		}
		catch(SQLException sql){
			sql.printStackTrace();
		}
	}
	/**
	 * Objetivo- verificar o comportamento da funcao consultar cliente pelo nome
	 * Pre-condicao - o nome esta cadastrado
	 */
	@Test
	public void CT03A2ConsultaCliente_nome_cadastrado() {
		ResultSet rs=null;
		rs = clienteDAO.consultaNome("%manoel%");
		
		try{
			rs.last();//posiciona o rs no ultimo registro
			assertEquals("achou o registro =", 2, rs.getRow());
		}
		catch(SQLException sql){
			fail("erro no sql");
			sql.printStackTrace();
		}
	}
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		clienteDAO.exclui("58905389007");
		clienteDAO.exclui("74554713431");
	}

}
